/*********************************************************************
 * Interface for a class to manipulate a PQ.
**/
public interface IPQ
{
/*********************************************************************
 * Accessors and mutators.
**/
/*********************************************************************
 * Method to return the size of the queue.
 *
 * @return the <code>size</code>
**/
  public int getSize();

/*********************************************************************
 * General methods.
**/
/*********************************************************************
 * Method to fix a heap in the "up" direction.
 *
 * @param newRecord the subscript of the record to be put in place.
**/
  public void fixHeapUp(int which);

/*********************************************************************
 * Method to fix a heap in the "down" direction.
 *
 * @param newRecord the subscript of the record to be put in place.
**/
  public void fixHeapDown(int which);

/*********************************************************************
 * Method to add a record.
 * By default, this adds the record at the end of a list.
 *
 * @param newRecord the record to be added.
**/
  public void insert(ProcessRecord newRecord);

/***********************************************************
 * Method to return the record with the max value. 
 *
 * @return the <code>ProcessRecord</code> record that was
 *         found, or null.
**/
  public ProcessRecord returnMax();

/***********************************************************
 * Method to remove the record with the max value. 
 *
 * @return the <code>ProcessRecord</code> record that was
 *         removed, or null.
**/
  public ProcessRecord removeMax();

/*********************************************************************
 * Method to <code>toString</code> a complete PQ.
**/
  public String toString();

} // public interface IPQ
